package com.xxl.job.core.biz.client;

import com.fish.common.core.util.ReturnT;
import com.xxl.job.core.biz.ExecutorBiz;
import com.xxl.job.core.biz.model.*;
import com.xxl.job.core.util.XxlJobRemotingUtil;

/**
 * admin api test
 *
 * @author xuxueli
 * @since 2017-07-28 22:14:52
 */
@SuppressWarnings("unchecked")
public class ExecutorBizClient implements ExecutorBiz {

	private final int timeout = 3;

	private String addressUrl;

	private String accessToken;

	public ExecutorBizClient() {
	}

	public ExecutorBizClient(String addressUrl, String accessToken) {
		this.addressUrl = addressUrl;
		this.accessToken = accessToken;

		// valid
		if (!this.addressUrl.endsWith("/")) {
			this.addressUrl = this.addressUrl + "/";
		}
	}

	@Override
	public ReturnT<String> beat() {
		return XxlJobRemotingUtil.postBody(addressUrl + "beat", accessToken, timeout, "", String.class);
	}

	@Override
	public ReturnT<String> idleBeat(IdleBeatParam idleBeatParam) {
		return XxlJobRemotingUtil.postBody(addressUrl + "idleBeat", accessToken, timeout, idleBeatParam, String.class);
	}

	@Override
	public ReturnT<String> run(TriggerParam triggerParam) {
		return XxlJobRemotingUtil.postBody(addressUrl + "run", accessToken, timeout, triggerParam, String.class);
	}

	@Override
	public ReturnT<String> kill(KillParam killParam) {
		return XxlJobRemotingUtil.postBody(addressUrl + "kill", accessToken, timeout, killParam, String.class);
	}

	@Override
	public ReturnT<LogResult> log(LogParam logParam) {
		return XxlJobRemotingUtil.postBody(addressUrl + "log", accessToken, timeout, logParam, LogResult.class);
	}

}
